package lessons.no5;

import java.util.Calendar;
import java.util.Date;

/**
 * Data 类 
 * Calendar类
 */
public class N5_5 {
    public static void main(String[] args) {
        
        N5_5 myclass = new N5_5();

        //myclass.exampleData();

        //myclass.exampleCalendar();

        myclass.exampleCalendar2();
    }

    /**
     * Data 类
     */
    public void exampleData()
    {
        System.out.println("#### 创建Data 类的两种方法 ####");
        // 创建表示当前时间的Date对象
		Date date1 = new Date();
		// 获取当前时间后1秒的时间
		Date date2 = new Date(System.currentTimeMillis() + 1000);
		System.out.println(date1);
		System.out.println(date2);
        System.out.println();

        System.out.println("#### Data 类的成员方法 ####");
        String[] week = {"日","一","二","三","四","五","六"};
        String test = 
        "年:"+(1900+date1.getYear())+"\n"+
        "月:"+(1+date1.getMonth())+"\n"+
        "日"+date1.getDate()+"\n"+
        "时:"+date1.getHours()+"\n"+
        "分:"+date1.getMinutes()+"\n"+
        "秒:"+date1.getSeconds()+"\n"+
        "星期:"+week[date1.getDay()]+"\n";
        System.out.println(test);
        System.out.println();
    }

    /**
     * Calendar 类
     */
    public void exampleCalendar()
    {
        System.out.println("#### Calendar 类 ####");

        // 获取表示当前时间的Calendar对象
        Calendar calendar = Calendar.getInstance();
        // 设置指定日期
        calendar.set(2018, 1, 1);
        // 为指定日期增加时间 100天后

        calendar.add(Calendar.DATE, 100);
        // 返回指定日期的年
        int year = calendar.get(Calendar.YEAR);
        // 返回指定日期的月
        int month = calendar.get(Calendar.MONTH) + 1;
        // 返回指定日期的日
        int date = calendar.get(Calendar.DATE);
        System.out.println("计划竣工日期为:" + year + "年" 
                       + month + "月" + date + "日");
                       
        System.out.println();
    }

    public void exampleCalendar2()
    {
        System.out.println("#### Calendar 类 容错模式 ####");

        // 获取表示当前时间的Calendar对象
		Calendar calendar = Calendar.getInstance();
		// 设置指定日期,将MONTH设为13
		calendar.set(Calendar.MONTH, 13);

        
        //结果可以看到 设置月份13是错误的，容错模式自动将月份调整为12并输出下一年的时间
		System.out.println(calendar.getTime());

        
		// 开启non-lenient模式
		calendar.setLenient(false);
		calendar.set(Calendar.MONTH, 13);

        //结果可以看到 设置月份13是错误的，非容错模式下报出异常错误
		System.out.println(calendar.getTime());
                       
        System.out.println();

        
    }
}
